Getting Started
Prerequisites
| Tool | Minimum version | Notes |
|---|---|---|
| Zig | 0.15.2 | included in the Nix shell |
| Verilator | 5.x | for digital co-simulation |
| Yosys | 0.38+ | for RTL synthesis |
| ngspice | 42+ | for analog simulation |
Quick Start (Nix)
# Clone the repository
git clone https://github.com/UWASIC/Schemify.git
cd Schemify
# Enter the development shell (provides Zig, Verilator, Yosys, …)
nix develop
# Build and run
zig build run
# Run with a project directory
zig build run -- /path/to/my-project
Quick Start (Manual)
If you prefer not to use Nix, install Zig 0.15.2 manually and ensure verilator and yosys are on your $PATH.
zig build # build only
zig build run # build + run
zig build test # run all tests
Web Build
zig build -Dbackend=web
# Output: zig-out/web/
# Serve with any static file server
Opening a Project
Schemify looks for a Config.toml in the directory passed as the first argument (or the current directory if none is given):
# Opens the project defined in ~/designs/inverter/Config.toml
schemify ~/designs/inverter
CLI Usage
Schemify has a first-class headless CLI — no display, no Tcl, no virtual framebuffer.
# Generate SPICE netlist
schemify --netlist output.spice schematic.chn
# Generate Xyce-compatible netlist
schemify --netlist --xyce output.spice schematic.chn
# Export SVG render
schemify --export-svg render.svg schematic.chn
# Install a plugin
schemify --plugin-install https://example.com/plugin.wasm
First Project
Create a directory with a Config.toml:
name = "My First Design"
pdk = "sky130"
[paths]
chn = ["top.chn"]
chn_tb = ["tb.chn_tb"]
Then run schemify . inside that directory.